/*
 * Esta clase permite habilitar los módulos a los cuales el usuario
 * tendra acceso una vez logeado.
 * Esto se logra consultando la BD con al menos con un acceso al modulo
 * Los accesos son unicamente (visitar, añadir, modificar, total)
 */
package person.permission;

import system.general.Exc;
import system.general.Logged;
import system.general.Message;
import java.sql.SQLException;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.el.ELContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author emojica
 */
@ManagedBean(name = "menuAccess")
@RequestScoped
public class Menu {

    Logged logged;
    private Message msg = new Message();
    private Find person_permissionFind = new Find();
    private Map<String, String> map = new LinkedHashMap<>();

    public Menu() {
        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        logged = (Logged) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "logged");
    }

    public boolean load(String data) {
        try {
            //si existe modulo para el usuario los habilita en true
            //localizamos el id_usuario a través del id_persona que se ha seleccionado
            map.clear();
            map.put("id_persona = " + logged.getLoggedId(), " AND ");
            map.put("nombre = '" + data, "' ");
            return person_permissionFind.byExist(map);

        } catch (Exc ex) {
            msg.showMsg(namePackage(), "system", ex.getIdError());
            return false;
        } catch (SQLException ex) {
            msg.showErr(namePackage(), "sql", ex);
            return false;
        } catch (Exception ex) {
            msg.showErr(namePackage(), "java", ex);
            return false;
        } finally {
        }
    }

    private String namePackage() {
        Package pack = this.getClass().getPackage();
        return pack.getName();
    }

    public boolean getModule31() {
        return load("31");
    }
}
